package com.zwps.biz.api.model.vo.permission.page;

import java.time.LocalDateTime;
import java.util.List;

import com.zwps.common.tool.tree.Trees;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

@Schema(description = "菜单树")
@Getter
@Setter
public class PagePermissionTreeVO extends Trees<String, Void, PagePermissionTreeVO> {

    @Schema(description = "ID")
    private String id;

    @Schema(description = "上级ID")
    private String parentId;

    @Schema(description = "名称")
    private String name;

    @Schema(description = "排序值")
    private Integer sort;

    @Schema(description = "子集")
    private List<PagePermissionTreeVO> children;

    /**
     * 图标
     */
    @Schema(description = "图标")
    private String icon;

    /**
     * 组件路径
     */
    @Schema(description = "组件路径")
    private String component;

    /**
     * 类型(0系统、1目录、2菜单、3按钮)
     */
    @Schema(description = "类型(0系统、1目录、2菜单、3按钮)")
    private Integer type;

    /**
     * 菜单名称
     */
    @Schema(description = "菜单名称")
    private String menuName;

    /**
     * 权限标识(系统:目录:菜单:按钮)
     */
    @Schema(description = "权限标识(系统:目录:菜单:按钮)")
    private String permission;

    /**
     * 排序
     */
    @Schema(description = "排序")
    private Integer orderNo;


    /**
     * 状态（0关闭、1开启）
     */
    @Schema(description = "状态（0关闭、1开启）")
    private Integer status;

    /**
     * 是否显示（0隐藏、1显示）
     */
    @Schema(description = "是否显示（0隐藏、1显示）")
    private Integer showMenu;

    /**
     * 是否缓存（0否、1是）
     */
    @Schema(description = "是否缓存（0否、1是）")
    private Integer ignoreKeepAlive;

    /**
     * 外链地址
     */
    @Schema(description = "外链地址")
    private String frameUrl;

    /**
     * 路由地址
     */
    @Schema(description = "路由地址")
    private String path;

    /**
     * 父级菜单
     */
    @Schema(description = "父级菜单")
    private String parentMenu;

    /**
     * 当前激活菜单
     */
    @Schema(description = "当前激活菜单")
    private String currentActiveMenu;

    /**
     * 是否外链（0否、1是）
     */
    @Schema(description = "是否外链（0否、1是）")
    private Integer showFrame;

    /**
     * 树编码
     */
    @Schema(description = "树编码")
    private String treeCode;
    
    /**
     * 创建用户
     */
    @Schema(description = "创建用户")
    private String createBy;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    /**
     * 修改用户
     */
    @Schema(description = "修改用户")
    private String updateBy;

    /**
     * 修改时间
     */
    @Schema(description = "修改时间")
    private LocalDateTime updateTime;

}
